In modern "enterprise" digital data processing systems for use in an office environment in a company, a number of personal computers, workstations, and other various network resources such as mass storage subsystems, network printers and interfaces to the public telephony system, are typically interconnected in a computer network. The personal computers and workstations are used by individual users to perform processing in connection with data and programs that may be stored in the network mass storage subsystems. In such an arrangement, the personal computers/workstations, operating as clients, download the information, including data and programs, from the network mass storage subsystems for processing. In addition, the personal computers or workstations will enable processed data to be uploaded to the network mass storage subsystems for storage, to a network printer for printing, to the telephony interface for transmission over the public telephony system, or the like. In such an arrangement, the network mass storage subsystems, network printers and telephony interfaces operate as shared resources, since they are available to service requests from all of the clients in the network. By organizing the network in such a manner, the servers are readily available for use by all of the personal computers/workstations in the network. Networks may be spread over a fairly wide area, and may interconnect personal computers, workstations and other devices among a number of companies and individuals.
Computers and other resources (generally, "devices") in a network share information by transferring messages thereamong. Messages can be categorized into two general classes, namely, unicast messages and multicast messages. A unicast message is used by a device to transfer information to one other device in the network, whereas a multicast messages is used by a device to transfer information to all of the devices, or a selected subset of the devices, in the network. Each unicast message includes address information, including a source address, which identifies the particular device that transmitted the message, and a destination address, which identifies the particular device that is to receive the message in the case of a unicast message. Similarly, each multicast message includes address information, including a source address, which identified the particular device that transmitted the message, and a destination address that identifies a set of devices (which may be either all of the devices or a selected subset) that are to receive the message in the case of a multicast message. When a particular device determines that a unicast message contains a destination address that identifies it (that is, the particular device), or that a multicast message contains a destination address that identifies a set of devices that includes the particular device, it (that is, the particular device) will receive and process the message.
Although networks generally transfer messages reliably, sometimes messages are lost and not received by the destination devices, that is, the particular devices that are intended to receive them. If a destination device fails to receive a message, it can transmit a "negative acknowledgment" ("NACK") message to the source device, that is, the device that generated and transmitted the message over the network, requesting retransmission of the message. Typically, unicast messages transmitted by a particular source device to a particular destination device include sequencing information so that, if a destination device determines that there is a gap in the sequence of messages received by it from a particular source device, it can notify the source device to request retransmission. If messages can be delivered to the destination device out of the order in which they are transmitted, the destination device may wait for a period of time after it notices the gap in the sequence to see if the missing messages might be eventually delivered, but, in any case, if the missing message are not delivered to the destination device at least prior to expiration of the period of time, the destination device will generate the "NACK" message and transmit it to the source device to enable retransmission of the missing messages.
A similar operation occurs in connection with multicast messages. That is, if a destination device determines that a multicast message whose destination address identifies a set that includes the destination device, in a sequence of such multicast messages from the same source device, has not been received, it (that is the destination device) will generate a "NACK" message for transmission to the source device requesting retransmission of the message, or at least transmission of the information in the message in a unicast message to the destination device. However, unless failure to receive a multicast message by one destination device is due to a malfunction of that destination device, if one destination device fails to receive a multicast message, frequently a large number or all of destination devices in the destination device set for the multicast message will also fail to receive the multicast message, all of which will generate and transmit "NACK" messages to the source device requesting retransmission of the multicast message. In that case, if there are a large number of destination devices in the device set for the multicast message, the source device may receive and process a large number of such "NACK" messages, which can significantly negatively effect its (that is, the source device's) other processing operations.